﻿
namespace 住院医生工作站
{
    
    /// <summary>
    /// 公有类：用户（业务逻辑层）；
    /// </summary>
    public class UserBll
    {

        /// <summary>
        /// 公有静态方法：登录；
        /// </summary>
        /// <param name="user">用户</param>
        /// <returns>是否登录成功</returns>
        public static bool LogIn(User user)
        {
            if (UserDal.SelectCount(user) == 1)                                 //调用数据访问层的静态方法，查询与输入的用户号、密码匹配的记录行数；
            {                                                                   //若匹配行数为1；
                user.HasLoggedIn = true;                                        //完成登录；
                user.Message = "登录成功。";                                    //给出正确提示；
            }
            else                                                                //否则；
            {
                user.HasLoggedIn = false;                                       //未完成登录；
                user.Message = "用户号/密码有误，请重新输入！";                 //给出错误提示；
            }
            return user.HasLoggedIn;                                            //返回用户是否登录成功；
        }

        /// <summary>
        /// 公有静态方法：注册；
        /// </summary>
        /// <param name="user">用户</param>
        /// <returns>是否注册成功</returns>
        public static bool SignUp(User user)
        {
            int rowAffected1 = UserDal.Insert(user);                            //调用数据访问层的静态方法来插入用户，并返回受影响行数；
            if (rowAffected1 == 1)                                              //若受影响的行数为1；
            {
                user.HasSignedUp = true;                                        //完成注册；
                user.Message = "注册成功。";                                    //给出正确提示；
            }
            else                                                                //否则；
            {
                user.HasSignedUp = false;                                       //未完成注册；
                if (user.IsDuplicate)                                           //若用户雷同；
                {
                    user.Message = "您注册的用户号已存在，请重新输入！\n";      //给出错误提示；
                }
                user.Message += "注册失败！";                                   //给出错误提示；
            }
            return user.HasSignedUp;                                            //返回用户是否注册成功；
        }

        /// <summary>
        /// 公有静态方法：修改密码；
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="newPassword">新密码</param>
        /// <param name="newPassword2">新密码确认</param>
        /// <returns>是否修改成功</returns>
        public static bool ModifyPassword(User user, string newPassword, string newPassword2)
        {
            bool isSuccess = false;
            if (newPassword == newPassword2)                                    //若两次输入的新密码一致；
            {
                user.Password = newPassword;                                    //将新密码赋予用户的相应属性；
                isSuccess = (UserDal.UpdatePassword(user) == 1);                //调用数据访问层的静态方法，更新用户密码，并判断受影响行数是否为1，若为1则修改成功；
                if (isSuccess)                                                  //若修改成功；
                {                                                               
                    user.Message = "密码更新成功。";                            //给出正确提示；
                }
                else                                                            //否则；
                {
                    user.Message = "密码更新失败！";                            //给出错误提示；
                }
            }
            else                                                                //若两次输入的新密码不一致；
            {
                user.Message = "两次输入的新密码不一致！";                      //给出错误提示；
            }
            return isSuccess;                                                   //返回是否修改成功；
        }
    }
}
